///*
//struct ListNode {
//	int val;
//	struct ListNode *next;
//	ListNode(int x) :
//			val(x), next(NULL) {
//	}
//};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) {
//		ListNode* p1 = pHead1;
//		ListNode* p2 = pHead2;
//		int count1 = 0;
//		int count2 = 0;
//		while (p1)
//		{
//			p1 = p1->next;
//			count1++;
//		}
//		while (p2)
//		{
//			p2 = p2->next;
//			count2++;
//		}
//		if (count1 > count2)
//		{
//			while (count1 != count2)
//			{
//				pHead1 = pHead1->next;
//				count1--;
//			}
//		}
//		else {
//			while (count1 != count2)
//			{
//				pHead2 = pHead2->next;
//				count2--;
//			}
//		}
//		while (pHead1 && pHead2)
//		{
//			if (pHead1 == pHead2)
//				return pHead1;
//			pHead1 = pHead1->next;
//			pHead2 = pHead2->next;
//		}
//		return nullptr;
//
//	}
//};
///*
//struct ListNode {
//	int val;
//	struct ListNode *next;
//	ListNode(int x) :
//			val(x), next(NULL) {
//	}
//};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) {
//		ListNode* p1 = pHead1;
//		ListNode* p2 = pHead2;
//		while (p1 != p2)
//		{
//			p1 = p1 ? p1->next : pHead2;
//			p2 = p2 ? p2->next : pHead1;
//		}
//		return p1;
//	}
//};
